package com.itheima.d5_bigdecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test2 {
    public static void main(String[] args) {
        // 目标：掌握BigDecimal进行精确运算的方案。
        double a = 0.1;
        double b = 0.2;

        // 1、把浮点型数据封装成BigDecimal对象，再来参与运算。
        // a、public BigDecimal(double val) 得到的BigDecimal对象是无法精确计算浮点型数据的。 注意：不推荐使用这个，
        // b、public BigDecimal(String val)  得到的BigDecimal对象是可以精确计算浮点型数据的。 可以使用。
        // c、public static BigDecimal valueOf(double val): 通过这个静态方法得到的BigDecimal对象是可以精确运算的。是最好的方案。

        // 2、public BigDecimal add(BigDecimal augend): 加法
        BigDecimal b1 = new BigDecimal(a);
        BigDecimal b2 = new BigDecimal(b);
        System.out.println(b1.add(b2));
        BigDecimal b3 = new BigDecimal("0.1");
        BigDecimal b4 = new BigDecimal("0.2");
        System.out.println(b3.add(b4));
        // 3、public BigDecimal subtract(BigDecimal augend): 减法
        BigDecimal b5 = new BigDecimal("0.1");
        BigDecimal b6 = new BigDecimal("0.2");
        System.out.println(b6.subtract(b5));
        // 4、public BigDecimal multiply(BigDecimal augend): 乘法
        BigDecimal b7 = new BigDecimal("0.1");
        BigDecimal b8 = new BigDecimal("0.2");
        System.out.println(b7.multiply(b8));
        // 5、public BigDecimal divide(BigDecimal b): 除法
        BigDecimal b9 = new BigDecimal("10");
        BigDecimal b10 = new BigDecimal("3");
        System.out.println(b9.divide(b10,3,RoundingMode.HALF_UP));
        // 6、public BigDecimal divide(另一个BigDecimal对象，精确几位，舍入模式) : 除法，可以设置精确几位。
        // 舍入模式可以使用枚举 : RoundingMode

        // 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
    }
}
